<?php

class ClienteController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
		// Agregar seguridad
    }

    public function indexAction()
    {
        // action 
		$this->_helper->redirector('ingreso','cliente');
    }

    public function registrarAction()
    {
		$form = new Application_Form_Registrar();
		// print_r($this->getRequest());
		// bandera para mostrar mensaje de registro exitoso
		$this->view->registroExitoso = false;
		
		// VALIDAMOS QUE EL METODO SEA POST
		if($this->getRequest()->isPost()){
			// confirmamos que el formulario es valido
			if($form->isValid($this->_request->getPost())){
				//instanciamos la tabla correspondiente !
				$tablaClientes = new  Application_Model_DbTable_Clientes();
				//creamos un array para los datos
				$datos = array(
					'nombre' => $form->getValue('nombre'),
					'apellido' => $form->getValue('apellido'),
					'email' => $form->getValue('email'),
					'telefono' => $form->getValue('telefono'),
					'empresa' => $form->getValue('empresa'),
					'direccion' => $form->getValue('domicilio'),
					'id_pais' => $form->getValue('pais'),
					'id_provincia' => $form->getValue('zonas'),
					'ciudad' => $form->getValue('ciudad'),
					'codigo_postal' => $form->getValue('codigoPostal'),
					'fecha_alta' => date('Y-m-d h:i:s'),
					'fecha_nac' => $form->getValue('fechaNac'),
					'password' => md5($form->getValue('pwd'))
				);
				// persistimos los datos 
				$tablaClientes->insert($datos);
				$this->view->registroExitoso =true;
				
			}
		}
		
		$this->view->formRegistro = $form;
    }

    public function ingresoAction()
    {
		//si ya esta registrado no le permitimos ver el form de ingreso
		$auth = Zend_Auth::getInstance();
		if ($auth->hasIdentity()) {
			$userInfo = $auth->getStorage()->read();
			if(!$userInfo['isAdmin'])
				$this->_helper->redirector('index', 'index');
		}
        // instanciamos el formulario de ingreso
		$formIngreso = new Application_Form_Ingreso();
		
		if($this->getRequest()->isPost() && $formIngreso->isValid($this->_request->getPost())){
			//Autenticacion
			$db = Zend_Db_Table::getDefaultAdapter();
			$authAdapter = new Zend_Auth_Adapter_DbTable($db);

            $authAdapter->setTableName('clientes');
            $authAdapter->setIdentityColumn('email');
            $authAdapter->setCredentialColumn('password');
            $authAdapter->setCredentialTreatment('MD5(?)');
			
			$authAdapter->setIdentity($formIngreso->getValue('email'));
            $authAdapter->setCredential($formIngreso->getValue('pwd'));
			
			$auth = Zend_Auth::getInstance();
            $result = $auth->authenticate($authAdapter);
			
			if ($result->isValid()) {
				// Se registro exitosamente
				// Guardamos datos de session
				$datosSesion = array('email' => $auth->getIdentity());
				$tablaClientes = new  Application_Model_DbTable_Clientes();
				$datosCliente = $tablaClientes->getDatosClienteFromEmail($datosSesion['email']);
				$datosSesion['idCliente'] = $datosCliente[0]['id_cliente'];
				$datosSesion['nombre'] = $datosCliente[0]['nombre'];
				$datosSesion['apellido'] = $datosCliente[0]['apellido'];
				$datosSesion['isAdmin'] = false;
				$datosSesion['carrito'] = array(
					'total' => 0,
					'cantProd' => 0,
					'productos' => array()
				);
				$auth->getStorage()->write($datosSesion);
				// Registramos cuando fue la ultima vez que se loggeo
				$tablaClientes->setLastLogin($datosSesion['email']);
				
				$this->_helper->redirector('index', 'index');
			}else{
				// Fallo la autenticacion
				Zend_Session::forgetMe();
			}
		}
		
		$this->view->formIngreso = $formIngreso;
    }

    public function salirAction()
    {
        // Eliminamos la sesión
		Zend_Auth::getInstance()->clearIdentity();
		$this->_helper->redirector('index', 'index');
    }


}







